Java进阶-String 类

  1. java.lang.String 是字符串类型

  2. 字符串一旦创建不可修改

    • String 类 的源代码中,是这样定义值的 private final char value[],所以这个值不能二次赋值

    • 不可修改不是说不能重新指向,而是值本身不可变 String s1 = "abc"; 可重新指向 s1 = "cs";

  3. 提升字符串的访问效率:在程序中使用了“缓存”的技术,所以在 Java 中所有使用“双引号”括起来的字符串都会在“字符串常量池”中创建一份。字符串常量池在方法区中被存储

    • 在程序执行过程中,如果程序用到某个字符串,例如“ABC”,那么程序会在字符串常量池中去搜索该字符串,如果没有找到则在字符串常量池中新建一个“ABC”字符串;如果找到就直接拿过来用。(字符串常量池是一个缓存区,为了提高访问字符串的效率)
  4. 分析以下程序创建字符串对象的区别:

    • String s1 = "abc"; 只会在字符串常量池中创建一个“abc”字符串对象
    • String s2 = new String("hello"); 会在字符串常量池中创建一个“hello”字符串对象,并且会在堆中再创建一个字符串对象
    • 第二种方式比较浪费内存,常用的是第一种方式
  5. 使用 String 的时候我们应该注意的问题:尽量不要做字符串频繁的拼接操作。因为字符串一旦创建不可改变,只要频繁拼接,就会在字符串常量池中创建大量的字符串对象,给垃圾回收带来问题

    • 推荐字符串频繁拼接使用 StringBuffer 或 StringBuilder